<?php
class BitacorasController extends AppController {

	var $name = 'Bitacoras';
	var $uses = array('Bitacora','User', 'Group','CriteriosBitacora','ResultadosBitacora');
	var $helpers = array('Bitacora','Access','User');

	function index($usuario_calificado){
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		$group_id= $this->Access->getMy('group_id');
		$user_id= $this->Access->getMy('id');
		$this->set(compact('group_id','user_id','usuario_calificado'));
	}
		
	/**
	 * 
	 * Listar los usuarios a calificar segun el rol del usuario actual.
	 */
	function usuarios_bitacoras(){
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		$group_id= $this->Access->getMy('group_id');
		$user_id= $this->Access->getMy('id');
		
		$usuarios = array();
		//Si es diferente a Administador
		if($group_id!="1"){			
			//Averiguar el EO al que pertenece por medio de UsersEquiposOperativos
			$user_eo = $this->requestAction('/users_equipos_operativos/getlist/'.$group_id.'/'.$user_id);
			// Se seleccionan los usuarios que segun el rol debe listar
			$usuarios = $this->requestAction('/users/getlist/'.$user_eo['UsersEquiposOperativo']['equipos_operativo_id'].'/'.$group_id);
		}
		//Si es Administrador muestra todos los usuarios
		else{
			$usuarios = $this->paginate('User');
		}
		
		
		foreach ($usuarios as &$usuario){ 
			if($group_id!=1)
				$datos = $this->User->find('first',array('fields'=>array('User.group_id', 'User.nombre_completo'),'conditions'=>array('User.id'=>$usuario['UsersEquiposOperativo']['user_id'])));
			else 
				$datos = $this->User->find('first',array('fields'=>array('User.group_id', 'User.nombre_completo'),'conditions'=>array('User.id'=>$usuario['User']['id'])));
			
			$rol = $this->Group->find('first',array('fields'=>array('Group.nombre'),'conditions'=>array('Group.id'=>$datos['User']['group_id'])));
			
			$usuario['Usuario']= $datos['User'];
			$usuario['Rol']=$rol['Group']['nombre'];
			unset($usuario);
		}
				
		$this->set(compact('user_id','group_id', 'usuarios'));
	}
	
	/**
	 * 
	 * 
	 * @param unknown_type $id
	 */
	function view($id = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		if (!$id) {
			$this->Session->setFlash(__('Invalid bitacora', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('bitacora', $this->Bitacora->read(null, $id));
	}

	
	function add($mes = null, $year=null, $usuario_calificado=null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		if (!empty($this->data)) {
			$form = $this->data;			

			if(is_array($form['CriteriosBitacora'])) {
				$this->Bitacora->create();
				
				$registro['Bitacora']= array('user_calificado_id'=>$form['Bitacora']['user_calificado_id'],'user_calificador_id'=>$form['Bitacora']['user_calificador_id'], 
												   'mes'=>$form['Bitacora']['mes']);

				$this->Bitacora->create();					
				$this->Bitacora->save($registro);
				
				foreach ($form['CriteriosBitacora'] as $criterio){
					
					$resultado = (!empty($form['puntaje'][$criterio])) ? $form['puntaje'][$criterio] : 0;

					$registro_criterio['ResultadosBitacora']= array('criterios_bitacora_id'=>$criterio,'bitacora_id'=>$this->Bitacora->id,'puntaje'=>$resultado+1);
					
					$this->ResultadosBitacora->create();					
					$this->ResultadosBitacora->save($registro_criterio);
					
				}
				$this->Session->setFlash(__('La bitacora ha sido guardada', true));
				$this->redirect(array('action' => 'usuarios_bitacoras'));
			}			
			
			//---------------------------------------*******************----------------------------------------------------------
			$this->Bitacora->create();
			if ($this->Bitacora->save($this->data)) {
				$this->Session->setFlash(__('The bitacora has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The bitacora could not be saved. Please, try again.', true));
			}
		}
		$group_id= $this->Access->getMy('group_id');
		$user_id= $this->Access->getMy('id');
		$criterios = $this->CriteriosBitacora->find('all', array('fields'=>array('CriteriosBitacora.id','CriteriosBitacora.criterio')));
		$fecha = $year."-".$mes;
		
		$this->set(compact('group_id', 'user_id', 'usuario_calificado', 'criterios','fecha'));
	}

	function edit($mes=null, $year=null, $usuario_calificado = null) {
		$usuario_activo = $this->Access->getMy('username');
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		$group_id= $this->Access->getMy('group_id');
		$user_id= $this->Access->getMy('id');
		if (!$mes && !$year && empty($this->data)) {
			$this->Session->setFlash(__('Invalid bitacora', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			//Aqui se edita
			$form = $this->data;					
			
			if(is_array($form['CriteriosBitacora'])) {				
				foreach ($form['CriteriosBitacora'] as $criterio){					
					$resultado = $form['puntaje'][$criterio['criterio_id']];				
					$this->ResultadosBitacora->id = $criterio['resultado_id'];
					$this->ResultadosBitacora->saveField('puntaje',$resultado+1);
					
				}
				$this->Session->setFlash(__('La bitacora ha sido guardada', true));
				$this->redirect(array('action' => 'usuarios_bitacoras'));
			//Fin de la edicion
			}
		}
		if (empty($this->data)) {			
			$this->data = $this->Bitacora->find('first',array('fields'=>array('Bitacora.id','Bitacora.user_calificado_id'),'conditions'=>array('Bitacora.mes'=>$year."-".$mes,
																				 'Bitacora.user_calificado_id'=>$usuario_calificado)));
		}		
		$usuario_calificado = $this->data['Bitacora']['user_calificado_id'];
		$usuario_calificador = $user_id;
		
		$criterios = $this->CriteriosBitacora->find('all', array('fields'=>array('CriteriosBitacora.id','CriteriosBitacora.criterio')));
		
		$criterios_seleccionados = $this->ResultadosBitacora->find('all',array('conditions'=>array('ResultadosBitacora.bitacora_id'=>$this->data['Bitacora']['id'])));
		
		
		$criterios_activos = array(); $i=0;
		foreach ($criterios_seleccionados as $criterio){
			$criterios_activos[$i]=$criterio['ResultadosBitacora'];			
			$criterios_activos[$i]['criterio']=$criterio['CriteriosBitacora']['criterio'];
			$i++;
		}
		
		$fecha = $year."-".$mes;		
		$this->set(compact('group_id', 'user_id', 'usuario_calificador', 'usuario_calificado', 'criterios', 'criterios_activos', 'fecha'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for bitacora', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Bitacora->delete($id)) {
			$this->Session->setFlash(__('Bitacora deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Bitacora was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
}
?>